//
//  JLCLAdDelegate.h
//  JLCLDemo
//
//  Created by Mac on 2022/3/10.
//

#ifndef JLCLAdDelegate_h
#define JLCLAdDelegate_h

@protocol JLCLSplashAdDelegate <NSObject>
#pragma mark 开屏广告回调
@optional

/// 开屏广告加载失败 （失败后会重新请求，每个平台最多一次）
/// @param error 错误信息
- (void)jlcl_splashAdDidLoadFailWithError:(NSString *)error;

/// 开屏广告加载成功
- (void)jlcl_splashAdDidLoad;

/// 开屏广告被点击
- (void)jlcl_splashAdDidClick;

/// 开屏广告被跳过，广告被关闭也会触发
- (void)jlcl_splashAdDidClickSkipOrClose;
/// 获取eCPM，单位：分
/// 开通请联系客服
/// - Parameter eCPM: 返回一个大于或等于0的值
- (void)jlcl_splashAdGetECPM:(NSInteger)eCPM;
@end

#pragma mark 插屏/全屏广告回调
@protocol JLCLInterActionAdDelegate <NSObject>

@optional

/// 插屏/全屏广告加载失败 （失败后会重新请求，每个平台最多一次）
/// @param error 错误信息
- (void)jlcl_interstitialAdRenderFailWithError:(NSString *)error;

/// 插屏/全屏广告渲染成功
- (void)jlcl_interstitialAdRenderSuccess;

/// 插屏/全屏广告被关闭
- (void)jlcl_interstitialAdDidClose;

/// 插屏/全屏广告被点击
- (void)jlcl_interstitialAdDidClick;

/// 视频类广告视频准备就绪开始播放（非视频广告不触发）
- (void)jlcl_interActionVideoReady;

/// 视频类广告视频播放完成（非视频广告不触发）
- (void)jlcl_interActionVideoComplete;
/// 获取eCPM，单位：分
/// 开通请联系客服
/// - Parameter eCPM: 返回一个大于或等于0的值
- (void)jlcl_interActionAdGetECPM:(NSInteger)eCPM;
@end

#pragma mark banner广告回调
@protocol JLCLBannerAdDelegate <NSObject>

@optional

/// banner广告加载失败 （失败后会重新请求，每个平台最多一次）
/// @param error 错误信息
- (void)jlcl_bannerViewFailedToLoadWithError:(NSString*)error;

/// banner广告加载成功
- (void)jlcl_bannerViewDidLoad;

/// banner广告被关闭
- (void)jlcl_bannerViewWillClose;

/// banner广告被点击
- (void)jlcl_bannerViewClicked;
/// 获取eCPM，单位：分
/// 开通请联系客服
/// - Parameter eCPM: 返回一个大于或等于0的值
- (void)jlcl_bannerViewGetECPM:(NSInteger)eCPM;
@end

#pragma mark 信息流广告回调
@protocol JLCLNativeAdDelegate <NSObject>

@optional

/// 信息流广告加载失败 （失败后会重新请求，每个平台最多一次）
/// @param error 错误信息
- (void)jlcl_nativeAdloadDidFailWithError:(NSString*)error;

/// 信息流广告加载成功，刷新数据
/// @param adDataArray 数据源
- (void)jlcl_nativeAdloadSuccessWithDataArray:(NSMutableArray *)adDataArray;

/// 信息流广告被点击不喜欢
- (void)jlcl_nativeAdClickDislike:(id)data;

/// 信息流广告渲染成功
- (void)jlcl_nativeAdExposure;

/// 信息流广告被关闭
- (void)jlcl_nativeAdDismiss;

/// 信息流广告被点击
- (void)jlcl_nativeAdClicked;

/// 视频类广告视频准备就绪开始播放（非视频广告不触发）
- (void)jlcl_nativeVideoReady;

/// 视频类广告视频播放完成（非视频广告不触发）
- (void)jlcl_nativeVideoComplete;
/// 获取eCPM，单位：分
/// 开通请联系客服
/// - Parameter eCPM: 返回一个大于或等于0的值
- (void)jlcl_nativeVideoGetECPM:(NSInteger)eCPM;
@end

#pragma mark  激励视频广告回调
@protocol JLCLRewardVideoAdDelegate <NSObject>

@optional
/// 激励视频广告加载失败 （失败后会重新请求，每个平台最多一次）
/// @param error 错误信息
- (void)jlcl_rewardAdFail:(NSString*)error;

/// 激励视频广告被点击
- (void)jlcl_rewardAdClicked;

/// 激励视频广告被关闭
- (void)jlcl_rewardAdClose;

/// 激励视频广告开始展示
- (void)jlcl_rewardAdExposure;

/// 激励视频广告视频缓存加载完成，此时播放视频比较流畅
- (void)jlcl_rewardVideoCached;

/// 激励视频广告触发激励（观看视频到达一定时长或者视频播放完毕时触发）
- (void)jlcl_rewardVerify;
/// 获取eCPM，单位：分
/// 开通请联系客服
/// - Parameter eCPM: 返回一个大于或等于0的值
- (void)jlcl_rewardAdGetECPM:(NSInteger)eCPM;
@end

#pragma mark  draw竖版视频信息流广告回调
@protocol JLCLDrawNativeVideoAdDelegate <NSObject>

@optional

/// draw竖版视频信息流广告加载失败 （失败后会重新请求，每个平台最多一次）
/// @param error 错误信息
- (void)jlcl_drawNativeAdFail:(NSString*)error;

/// draw竖版视频信息流广告视频被点击
- (void)jlcl_drawNativeAdClicked;

/// draw竖版视频信息流广告渲染成功
- (void)jlcl_drawNativeRenderSuccess;

/// draw竖版视频信息流广告加载成功
/// @param adDataArray 数据源
- (void)jlcl_drawNativeAdloadSuccessWithDataArray:(NSMutableArray *)adDataArray;
/// 获取eCPM，单位：分
/// 开通请联系客服
/// - Parameter eCPM: 返回一个大于或等于0的值
- (void)jlcl_drawNativeGetECPM:(NSInteger)eCPM;
@end


#pragma mark  内容 + 广告代理回调
@protocol JLCLContentStyleAdDelegate <NSObject>
@optional

/// 内容 + 广告请求失败 （失败后会重新请求，每个平台最多一次）
- (void)jlcl_contentAdloadFail;

/// 视频播放开始
/// @param videoId 视频id号
- (void)jlcl_contentAdWithvideoDidStartPlay:(NSString *)videoId;

/// 视频播放暂停
/// @param videoId 视频id号
- (void)jlcl_contentAdWithvideoDidPause:(NSString *)videoId;

/// 视频播放恢复
/// @param videoId 视频id号
- (void)jlcl_contentStyleAdWithvideoDidResume:(NSString *)videoId;

/// 视频播放停止
/// @param videoId 视频id号
/// @param finished 是否播放完成
- (void)jlcl_contentStyleAdWithvideoDidEndPlay:(NSString *)videoId withFinished:(BOOL)finished;


/// 视频播放失败
/// @param videoId 视频id号
/// @param error 错误原因
 
- (void)jlcl_contentStyleAdWithvideoDidFailedToPlay:(NSString *)videoId withError:(NSString *)error;
@end
#endif /* JLCLAdDelegate_h */
